// 1.引入MySQL模块
let mysql = require("mysql")
    // 2.创建连接池
let pool = mysql.createPool({
    connectionLimit: 33,
    host: "localhost",
    port: 3306,
    user: "root",
    password: "",
    database: "myshop",
})

//3.定义一个数据库查询方法
/* 
sql=>查询语句
values=>查询语句中的值
callback=>查询成功的回调函数
*/
function query(sql, values, callback) {
    // console.log("开始查询:", sql, values);
    // 调用连接池的getConnection方法
    pool.getConnection(function(err, connection) {
        if (err) throw err;
        // 具体查询和获取结果
        connection.query(sql, values, function(err, results, fields) {
            callback(err, results, fields)
                // 释放连接
            connection.release()
        })

    })
}

// 构造promise函数解决回调地狱问题
function queryWithPromise(sql, values) {
    console.log("开始查询:", sql, values);
    return new Promise(function(resolve, reject) {
        pool.getConnection(function(err, connection) {
            if (err) throw err;
            connection.query(sql, values, function(err, results, fields) {
                resolve({ err, results, fields });
                // 释放连接
                connection.release();
            })
        })
    })
}


// 根据cat_id返回菜单数据
function query_cat(cat_id) {
    let sql = "select * from menu where cat_id =?"
    return new Promise(function(resolve, reject) {
        query(sql, [cat_id], function(err, results, fields) {
            resolve(results)
        })
    })
}
exports.query = query;
exports.query_cat = query_cat;
exports.queryWithPromise = queryWithPromise